/* * Copyright (C) 2021 Huawei Device Co., Ltd.
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.zhouyou.http.demo.slice;

import com.zhouyou.http.demo.LoginAbility;
import com.zhouyou.http.demo.ResourceTable;
import com.zhouyou.http.model.utils.EventHelper;
import ohos.aafwk.ability.delegation.AbilityDelegatorRegistry;
import ohos.aafwk.ability.delegation.IAbilityDelegator;
import ohos.agp.components.Button;
import ohos.agp.utils.TextTool;
import ohos.app.Context;
import org.junit.After;
import org.junit.Test;

import static org.junit.Assert.assertTrue;


public class LoginAbilitySliceTest {
    private static IAbilityDelegator sAbilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator();
    long longTime = 4000;
    long shortTime = 2000;
    @After
    public void tearDown() throws Exception {
        EventHelper.clearAbilities();
        Thread.sleep(2000);
    }

    @Test
    public void onLogin() {
        Context context = sAbilityDelegator.getAppContext();
        LoginAbility loginAbility = EventHelper.startAbility(LoginAbility.class);
        sleep(shortTime);

        LoginAbilitySlice loginAbilitySlice = new LoginAbilitySlice();
        boolean doAbilitySliceStart = sAbilityDelegator.doAbilitySliceStart(loginAbility, loginAbilitySlice);
        assertTrue("LoginAbilitySlice is start!!!!", doAbilitySliceStart);
        Button button = (Button) loginAbilitySlice.findComponentById(ResourceTable.Id_btn_email_sign_in);
        EventHelper.triggerClickEvent(loginAbility, button);
        sleep(longTime);

        String result = loginAbilitySlice.getResult();
        assertTrue("result is empty!!!!", !TextTool.isNullOrEmpty(result));
        sAbilityDelegator.stopAbility(loginAbility);
    }


    private void sleep(long time) {
        try {
            Thread.sleep(time);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}